In the prior art tests are executed using the three-phase model of initialization, execution and clean up. This makes test scheduling easy and deterministic. Each phase can succeed or fail. Most prior art testing is done sequential but most things are not sequential. In the testing of multi-media software all kinds of asynchronous events are going on such as start, play, pause, restart, resize video, etc. and a tool is needed to specify these tests in a very simple manner. It is highly desirable to be able to specify these operations in the background and one does not have to specify in the test. It is desirable that the tests should fit into the three phase test execution framework, that it is easy to add customizable functionality into framework that implements likely use cases and avoid serializing events and stepping in and out of a scheduler.